#pragma once

namespace yzrilyzr_vmp{
	class VMI{
		public:
		static constexpr int const TAG=0xc;
		static constexpr int const JUMP_ADDR=0xc5;
		static constexpr int const JUMP_EQ0=0x80;
		static constexpr int const JUMP_EQ1=0x9d;
		static constexpr int const JUMP_EQ2=0x82;
		static constexpr int const THROW_ADDR=0xee;
		static constexpr int const HALT=0xfd;
		static constexpr int const LOAD_IMM_8=0x9b;
		static constexpr int const LOAD_IMM_16=0x55;
		static constexpr int const LOAD_IMM_32=0x57;
		static constexpr int const LOAD_IMM_64=0xa8;
		static constexpr int const LOAD_POOL_STR=0x2c;
		static constexpr int const LOAD_POOL_I32=0x9f;
		static constexpr int const LOAD_POOL_F64=0x81;
		static constexpr int const LOAD_GLOBAL=0x43;
		static constexpr int const STORE_GLOBAL=0x2e;
		static constexpr int const LOAD_LOCAL=0x9c;
		static constexpr int const STORE_LOCAL=0xa9;
		static constexpr int const LOAD_CLOSURE=0xc4;
		static constexpr int const STORE_CLOSURE=0x5;
		static constexpr int const POP=0xbe;
		static constexpr int const DUP_TOP=0xca;
		static constexpr int const DUP_2TOP=0xfe;
		static constexpr int const SWAP_TOP=0xa5;
		static constexpr int const PUSH_FRAME=0x8d;
		static constexpr int const POP_FRAME=0x4;
		static constexpr int const CMP_EQ_I32=0x1d;
		static constexpr int const CMP_LT_I32=0x4b;
		static constexpr int const CMP_GT_I32=0x44;
		static constexpr int const CMP_LTU_I32=0x89;
		static constexpr int const CMP_GTU_I32=0xdc;
		static constexpr int const CMP_EQ_I64=0x4f;
		static constexpr int const CMP_LT_I64=0xb7;
		static constexpr int const CMP_GT_I64=0x49;
		static constexpr int const CMP_LTU_I64=0x56;
		static constexpr int const CMP_GTU_I64=0xd;
		static constexpr int const CMP_EQ_F32=0x48;
		static constexpr int const CMP_LT_F32=0xd4;
		static constexpr int const CMP_GT_F32=0xc8;
		static constexpr int const CMP_EQ_F64=0x39;
		static constexpr int const CMP_LT_F64=0xd9;
		static constexpr int const CMP_GT_F64=0xf4;
		static constexpr int const ADD_I32=0x2d;
		static constexpr int const SUB_I32=0x3;
		static constexpr int const MUL_I32=0x2b;
		static constexpr int const DIV_I32=0x7f;
		static constexpr int const DIVU_I32=0x3b;
		static constexpr int const MOD_I32=0xe1;
		static constexpr int const MODU_I32=0x8b;
		static constexpr int const MOD_F32=0x77;
		static constexpr int const ADD_I64=0x50;
		static constexpr int const SUB_I64=0xc0;
		static constexpr int const MUL_I64=0x6b;
		static constexpr int const DIV_I64=0x18;
		static constexpr int const DIVU_I64=0xc1;
		static constexpr int const MOD_I64=0x96;
		static constexpr int const MODU_I64=0x71;
		static constexpr int const MOD_F64=0xab;
		static constexpr int const ADD_F32=0x8e;
		static constexpr int const SUB_F32=0x74;
		static constexpr int const MUL_F32=0xd0;
		static constexpr int const DIV_F32=0x31;
		static constexpr int const ADD_F64=0xb5;
		static constexpr int const SUB_F64=0x95;
		static constexpr int const MUL_F64=0x9e;
		static constexpr int const DIV_F64=0x73;
		static constexpr int const AND_I32=0x23;
		static constexpr int const OR_I32=0x7c;
		static constexpr int const XOR_I32=0xcf;
		static constexpr int const NOT_I32=0xa;
		static constexpr int const AND_I64=0x15;
		static constexpr int const OR_I64=0xec;
		static constexpr int const XOR_I64=0x53;
		static constexpr int const NOT_I64=0x11;
		static constexpr int const SHL_I32=0x68;
		static constexpr int const SHR_I32=0xe;
		static constexpr int const USHR_I32=0xeb;
		static constexpr int const SHL_I64=0xff;
		static constexpr int const SHR_I64=0x1;
		static constexpr int const USHR_I64=0x20;
		static constexpr int const CALL_ADDR=0x59;
		static constexpr int const CALL_IND=0x25;
		static constexpr int const RETURN=0xe6;
		static constexpr int const RETURN_VOID=0x2;
		static constexpr int const NEW_OBJ=0xa2;
		static constexpr int const NEW_ARR_I32=0x4a;
		static constexpr int const NEW_ARR_F64=0x67;
		static constexpr int const NEW_ARR_OBJ=0x91;
		static constexpr int const GET_PROP=0xde;
		static constexpr int const SET_PROP=0x90;
		static constexpr int const GET_ELEM=0x8c;
		static constexpr int const SET_ELEM=0xd7;
		static constexpr int const EXPORT_SYM=0xd6;
		static constexpr int const IMPORT_SYM=0x8a;
		static constexpr int const NOP=0xc2;
		static constexpr int const NOP_2=0x34;
		static constexpr int const NOP_4=0x87;
	};
}
